﻿using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using HPPClientLibrary;
using HPPUtil;
using HPPUtil.Helpers;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace HPP.UnitTest
{
    /// <summary>
    /// ConfigManagerTest 的摘要说明
    /// </summary>
    [TestClass]
    public class ConfigManagerTest
    {
        public ConfigManagerTest()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }

        private TestContext testContextInstance;

        /// <summary>
        ///获取或设置测试上下文，该上下文提供
        ///有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region 附加测试属性
        //
        // 编写测试时，还可使用以下附加属性:
        //
        // 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
        // [ClassInitialize()]
        // public static void MyClassInitialize(TestContext testContext) { }
        //
        // 在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
        // [ClassCleanup()]
        // public static void MyClassCleanup() { }
        //
        // 在运行每个测试之前，使用 TestInitialize 来运行代码
        // [TestInitialize()]
        // public void MyTestInitialize() { }
        //
        // 在每个测试运行完之后，使用 TestCleanup 来运行代码
        // [TestCleanup()]
        // public void MyTestCleanup() { }
        //
        #endregion

        /// <summary>
        /// Save
        /// 
        /// 输入:各字段被赋值的ConfigManager对象
        /// 
        /// 预期输出：被正确保存到ini文件
        ///</summary>
        /// <remarks> 
        /// vls
        /// </remarks>
        [TestMethod]
        public void Test_ConfigManager_Save()
        {
            
            string winTempDir = System.Environment.GetEnvironmentVariable("TEMP").GetStringWithLastSlash();
            string fullpath = winTempDir + "config.ini";
            ConfigManager configManager = ConfigManager.Empty;

            int totalThreadLimit = 1998;
            int jobThreadLimit = 222;

            configManager.TotalThreadLimit = totalThreadLimit;
            configManager.JobThreadLimit = jobThreadLimit;

            configManager.Save(fullpath);

            INIClass iniClass = new INIClass(fullpath);

            Assert.AreEqual(totalThreadLimit.ToString(), iniClass.IniReadValue(ConfigManager.SectionName, "TotalThreadLimit"));
            Assert.AreEqual(jobThreadLimit.ToString(), iniClass.IniReadValue(ConfigManager.SectionName, "JobThreadLimit"));

            File.Delete(fullpath);
        }
    }
}
